USB peripheral devices, such as data storage devices containing non-volatile memory, are commonly used in home and business computing environments for reliable data storage in a compact and portable package. This type of USB peripheral device may include a USB controller that utilizes a protocol handler to interface with a USB physical layer (PHY) device and a backend circuit that communicates with flash memory. When a host connected via the USB connector of the USB device wishes to write data to, or read data from, the USB device, the commands and data are presented with the appropriate USB protocols and in the appropriate formats according to an agreed upon standard. The USB standards are designed with theoretical maximum data transfer rates. Although the USB standard will theoretically support these maximum data rates, the performance of USB data storage devices may not actually achieve the maximum data rates due to limitations of the storage medium and associated circuitry.
A USB controller in a USB data storage device manages the transfer of data to and from the USB data storage device. Typically, the data is transferred in batches of a known length and handshaking messages are exchanged between the host and the USB device to manage tiring and error checking during data transfer. One way to handle the data exchange in the USB peripheral device is for the USB controller to execute a number of firmware instructions on an internal microprocessor in response to processor interrupts generated as each of the batches of data is moved to or from buffers. Firmware involvement, however, can significantly impact data transfer performance. Each interrupt will delay other activities the internal microprocessor may be engaged in, or wake the microprocessor up from any temporary sleep or idle mode, and likely require time to identify, interpret and act on firmware instructions related to the interrupt. Accordingly, microprocessor activity in a USB controller can slow down the achievable data transfer rate and increase power consumption in the USB device.